package com.example.dllo.baidumusic.nettool;
/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         佛祖保佑       永无BUG
*/

import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;

/**
 * Created by dllo on 16/8/29.
 */
//处理圆形图片


/**drawable 与自定义view 的区别
 * drawable只能决定在屏幕上的东西是什么样子
 * 他是抽象的 我们不能 自定义drawable里处理view的 事件 逻辑
 *
 * drawable 让他不需要改动原始的组件
 */
public class CircleDrawable extends Drawable {
    private Bitmap bitmap;//要处理的源图片
    private Paint paint;//画笔,来画图片
    private int r;//圆形的半径


    public CircleDrawable(Bitmap bitmap) {
        this.bitmap = bitmap;
        //半径为 图片宽高最小值的一般
        r = Math.min(bitmap.getWidth(),bitmap.getHeight())/2;
        paint = new Paint();
        paint.setAntiAlias(true);//设置抗锯齿
        //将图片处理成 shader 之后设置给画笔
        //接收三个参数  第一个是 图片
        //  二 三 参数是图片的重复性 选 Clamp,不重复
        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
        //设置画笔的shader 属性可以理解为 画笔的花纹 用这个画笔画出来的东西
        //花纹就是我们的图片 所以 直接画个圆,就是圆形图片
        paint.setShader(bitmapShader);
    }

    @Override
    public void draw(Canvas canvas) {
        canvas.drawCircle(r,r,r,paint);

    }

    //来确定该 drawable 的具体范围
    @Override
    public int getIntrinsicHeight() {
        return r * 2;
    }

    @Override
    public int getIntrinsicWidth() {
        return r * 2;
    }

    @Override
    public void setAlpha(int i) {
        paint.setAlpha(i);

    }

    @Override
    public void setColorFilter(ColorFilter colorFilter) {
        paint.setColorFilter(colorFilter);

    }

    @Override
    public int getOpacity() {
        return 0;
    }
}
